<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreateContentTemplatesTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        // 内容模板表
        Schema::create('content_templates', function (Blueprint $table) {
            // 引擎
            // $table->engine = 'InnoDB';
            $table->increments('id');
            // 内容模板编号
            $table->string('template_no', 100)->index();
            // 内容模板名称
            $table->string('name', 100)->index();
            // 模板别名
            $table->string('alias', 100)->index();
            // 模板类型
            $table->integer('content_template_type_id')->unsigned()->index();
            // 描述
            $table->text('description')->nullable();
            // 排序
            $table->integer('listorder')->unsigned()->default(0);
            // 更新, 新建时间
            $table->timestamps();
            // 软删除
            $table->softDeletes();

            // 外键
            $table->foreign('content_template_type_id')->references('id')->on('content_template_types')->onUpdate('cascade')->onDelete('cascade');
            /*这是数据库外键定义的一个可选项，用来设置当主键表中的被参考列的数据发生变化时，外键表中响应字段的变换规则的。update 则是主键表中被参考字段的值更新，delete是指在主键表中删除一条记录：
        on update 和 on delete  后面可以跟的词语有四个
        no action  ， set null ，  set default  ，cascade
        no action 表示 不做任何操作，
        set null    表示在外键表中将相应字段设置为null
        set default 表示设置为默认值
        cascade 表示级联操作，就是说，如果主键表中被参考字段更新，外键表中也更新，主键表中的记录被删除，外键表中改行也相应删除*/
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::table('content_templates', function (Blueprint $table) {
            $table->dropForeign('content_templates_content_template_type_id_foreign');
        });
        Schema::dropIfExists('content_templates');
    }
}
